Method and apparatus for adjusting a sampling frequency of a data signal read from a storage medium

ABSTRACT

A system including a mark module, an estimation module and an adjustment module. The mark module is configured to generate a first indicator for a first mark on a storage medium detected when first servo data is read from the storage medium, and a second indicator for a second mark on the storage medium detected when second servo data is read from the storage medium. The estimation module is configured to, based on i) a first location of a center of the storage medium about which the storage medium is rotated, and ii) a period between times when the first indicator and the second indicator are generated, estimate a first distance or an offset angle relative to the first location. The adjustment module is configured to, based on the first distance or the offset angle, adjust a sampling frequency at which user data is read from the storage medium.

CROSS-REFERENCE TO RELATED APPLICATIONS

This present disclosure is a continuation of Ser. No. 13/214,606 (now U.S. Pat. No. 8,274,750), filed on Aug. 22, 2011, which is a continuation of U.S. application Ser. No. 12/335,017 (now U.S. Pat. No. 8,004,784), filed on Dec. 15, 2008, which claims priority under 35 U.S.C. §119(e) to U.S. Provisional Application No. 61/016,684 filed on Dec. 26, 2007 and U.S. Provisional Application No. 61/019,053 filed Jan. 4, 2008.

FIELD

The present disclosure relates to rotating storage mediums and more particularly to sampling data read from rotating storage mediums.

BACKGROUND

The background description provided herein is for the purpose of generally presenting the context of the disclosure. Work of the presently named inventors, to the extent the work is described in this background section, as well as aspects of the description that may not otherwise qualify as prior art at the time of filing, are neither expressly nor impliedly admitted as prior art against the present disclosure.

Host devices such as computers, laptops, personal video recorders (PVRs), MP3 players, game consoles, servers, set-top boxes, digital cameras, and/or other electronic devices often need to store a large amount of data. Storage devices such as hard disk drives and/or other rotating storage devices may be used to meet these storage requirements.

Data is written on a rotating storage medium of a device in concentric circles that are referred to as tracks. Before performing a read or a write operation, a head locks onto a track by referring to positioning information called servo data. The servo data is generally prewritten on rotating storage medium. The servo data provides the positioning information so the head can be positioned at the location at which the read or write operation will occur.

The frequency at which data read from the track is sampled is set based on a radial distance of the track from a center location, an angular velocity of the rotating storage medium, and a linear density of the data of the track. Sampling the data read from the track at an appropriate frequency optimizes the quality of data recovered from the rotating storage medium.

SUMMARY

A read and write system comprising a mark detection module, an offset estimation module, and a frequency adjustment module. The mark detection module is configured to generate (i) a first mark indicator when first servo data is read from a storage medium, and (ii) a second mark indicator when second servo data is read from the storage medium. The offset estimation module is configured to estimate at least one of a first distance or an offset angle based on (i) a first location of the storage medium, and (ii) a period between times when the first mark indicator and the second mark indicator are generated. The frequency adjustment module is configured to adjust a sampling frequency at which user data is read from the storage medium based on the at least one of the first distance or the offset angle.

Further areas of applicability of the present disclosure will become apparent from the detailed description, the claims and the drawings. It should be understood that the detailed description and specific examples are intended for purposes of illustration only and are not intended to limit the scope of the disclosure.

BRIEF DESCRIPTION OF DRAWINGS

The present disclosure will become more fully understood from the detailed description and the accompanying drawings, wherein:

FIG. 1 is a functional block diagram of a hard disk drive (HDD) system;

FIG. 2 is a platter of a hard disk drive assembly (HDDA);

FIG. 3 is a platter having an offset;

FIG. 4 is a functional block diagram of an exemplary implementation of a read/write channel system;

FIG. 5 is an exemplary illustration of normalized frequency offset as a function of wedge index value;

FIG. 6 is an exemplary illustration of normalized frequency offset as a function of normalized offset angle;

FIG. 7 is a flowchart depicting exemplary steps performed by a frequency adjustment system; and

FIG. 8 is a functional block diagram of a DVD drive.

DESCRIPTION

The following description is merely exemplary in nature and is in no way intended to limit the disclosure, its disclosure, or uses. For purposes of clarity, the same reference numbers will be used in the drawings to identify similar elements. As used herein, the phrase at least one of A, B, and C should be construed to mean a logical (A or B or C), using a non-exclusive logical or. It should be understood that steps within a method may be executed in different order without altering the principles of the present disclosure.

As used herein, the term module may refer to, be part of, or include an Application Specific Integrated Circuit (ASIC), an electronic circuit, a processor (shared, dedicated, or group) and/or memory (shared, dedicated, or group) that execute one or more software or firmware programs, a combinational logic circuit, and/or other suitable components that provide the described functionality.

The present disclosure relates to rotating storage mediums. Although the present disclosure will be discussed relative to a platter of a hard disk drive, the present disclosure is also applicable to other rotating storage mediums, such as optical storage mediums.

Data is written to a rotating storage medium as the medium rotates relative to a first center location. In some situations, the rotating storage medium may be rotated about a second center location that is offset from the first center location. A frequency adjustment system according to the present disclosure adjusts a sampling frequency for data read from the rotating storage medium based on a distance between the second center location and the read data.

Referring now to FIG. 1, a functional block diagram of an exemplary hard disk drive (HDD) system 10 is presented. The HDD system 10 includes a HDD printed circuit board (HDD PCB) 12 and a HDD assembly (HDDA) 13. The HDDA 13 includes one or more platters 14 that are each coated with a magnetic medium 15. The magnetic medium 15 stores positive and negative magnetic fields that represent data.

A spindle motor, shown schematically at 16, rotates the platters 14. Generally, the spindle motor 16 controls the platters 14 based on a predetermined operating speed (e.g., angular velocity) when data is being written to or read from the platters 14. For example only, the predetermined operating speed may be set to 3600, 7200, or 15000 revolutions per minute (rpm), although other speeds may be used. One or more read/write arms 18 move relative to the platters 14 to write data to or read data from the platters 14.

A read/write device 20 is located near a distal end of the read/write arm 18. The read/write device 20 includes a write element such as an inductor that generates a magnetic field. The read/write device 20 also includes a read element (such as a magneto-resistive (MR) head) that senses the magnetic field on the platters 14 and generates an analog read signal accordingly.

A preamplifier module 22 amplifies the analog read/write signals. More specifically, when reading data, the preamplifier module 22 amplifies the analog read signal from the read element and outputs the amplified signal to a read/write (R/W) channel module 24. When writing data, a write current is generated which flows through the write element of the read/write device 20. The write current is switched to produce a magnetic field having a positive or negative polarity. The positive or negative polarity is stored by the platters 14 and is used to represent data.

The HDD PCB 12 typically includes a buffer 32 that stores data that is associated with the control of the HDD system 10 and/or buffers data to allow data to be collected and transmitted as larger data blocks to improve efficiency. The buffer 32 may employ, for example, dynamic random access memory (DRAM), synchronous DRAM (SDRAM), double data rate (DDR), and/or any other type of memory having low latency. A processor 34 performs processing related to the operation of the HDDA 13 and various components of the HDD PCB 12.

The HDD PCB 12 further includes a hard disk control (HDC) module 36 that communicates with a host device 46 via an input/output (I/O) interface 38. The I/O interface 38 may be any suitable type of interface. For example only, the I/O interface 38 may be a serial or parallel interface, such as an Integrated Drive Electronics (IDE), Advanced Technology Attachment (ATA), or serial ATA (SATA) interface. The I/O interface 38 communicates with an I/O interface 48 that is associated with the host device 46.

The HDC module 36 also communicates with a spindle/voice coil motor (VCM) driver or module 40 and/or the read/write channel module 24. The spindle/VCM driver 40 controls the spindle motor 16 and, therefore, rotation of the platters 14. The spindle/VCM driver 40 also controls actuation of the read/write arm 18 and, therefore, position of the read/write arm 18 and the read/write device 20. For example only, the spindle/VCM driver 40 may control a voice coil actuator, a stepper motor, and/or any other suitable actuator 50 that controls the read/write arm 18. A power supply 42 supplies power for the HDD PCB 12 and/or the HDDA 13.

FIG. 2 is an exemplary illustration of one of the platters of the HDDA 13. Data is typically written to the platter 14 in concentric circles that are referred to as tracks, such as track 202. Specifically, the tracks are written to the platter 14 rotationally relative to a center location 204 (hereafter referred to as first center location 204). The platter 14 includes a predetermined number of servo wedges 206-1, 206-2, . . . , 206-N (hereafter referred to as servo wedges 206). Although only the two servo wedges 206-1 and 206-2 are shown, the platter 14 may include any suitable number of the servo wedges 206.

Before reading data from or writing data to the platter 14, a head locks onto the track 202 by referring to positioning information called servo data. The servo data provides the positioning information so the head can be precisely positioned at a given location (e.g., track and sector) at which the read or write operation will occur. The servo wedges 206 and the servo data are prewritten to the platter 14. More specifically, the servo data is prewritten to each of the servo wedges 206. The servo data of each of the servo wedges 206 may include, for example, a servo sync mark (SSM) field, track/sector identification (ID) field, position error sync (PES) field, and/or any other suitable data or field.

A specified component of the servo data of each of the servo wedges 206 is used as an indicator for that servo wedge. For example only, marks 208-1, 208-2, . . . , and 208-N (hereafter referred to as marks 208) correspond to the specified component of the servo data of the servo wedges 206-1, 206-2, . . . , and 206-N, respectively. The marks 208 may correspond to any suitable component of the servo data, such as the SSMs of the associated servo wedges 206.

The frequency at which data is read from the track 202 (i.e., sampled) is determined based on a distance (e.g., a radial distance) of the track 202 from the first center location 204, the angular velocity of the platter 14, and the linear density of the data of the track 202. For example only, the sampling frequency may be determined based on the equation: f=2*Π*r*S*D,  (1) where f is the sampling frequency (e.g., bits/sec), r is the radial distance between the track 202 and the first center location 204 (e.g., in), S is the angular velocity of the platter 14 (e.g., revolutions/sec), and D is the linear density of the data (e.g., bits/in). This frequency (i.e., f) is referred to as a nominal frequency. Sampling data read from the platter 14 at the nominal frequency generally ensures that the data is read at the same quality (e.g., 24-bit) that data was written.

FIG. 3 is an exemplary illustration of a circumstance when the platter 14 is offset from the first center location 204 is shown. The platter 14 is offset from the first center location 204 and rotates about a second center location 302. For example only, offset may occur when the platter 14 is used in a device other than the device that recorded data onto the track 202. Offset may also occur when a device containing the platter 14 is bumped, dropped, or otherwise jarred.

An exemplary offset track 304 corresponds to the track 202 if the track 202 was written rotationally relative to the second center location 302. An offset distance (i.e., Δ) corresponds to the distance between the first and second center locations 204 and 302.

An offset angle (i.e., Θ) corresponds to the angle between a first line 306 from the first center location 204 to the data of the track 202 and a second line 308 between the first and second center locations 204 and 302. The offset angle may be measured in any suitable manner, such as counter-clockwise from the second line 308 to the first line 306. Sampling the data at the nominal frequency when the platter 14 is rotating relative to the second center location 302 generally causes the data to be read from the track 302 at a lower quality than the quality at which the data was written.

FIG. 4 is a functional block diagram of exemplary implementation of a read/write system 400. A read element (such as a magneto-resistive (MR) head) of the read/write device 20 senses magnetic fields on the platter 14 and generates an analog read signal accordingly. In one implementation, the read element generates the analog read signal based on data read from the platter 14. The preamplifier module 22 amplifies the analog read signal and outputs an amplified read signal to the read/write channel module 24.

The read/write channel module 24 includes analog filters 408, an analog-to-digital converter (ADC) module 410, a clock 412, digital filters 414, and digital detectors 416. The read/write channel module 24 also includes a mark detection module 418 and a timer module 420. Further, the read/write channel module 24 includes an offset estimation module 424, and a frequency adjustment module 426.

The analog filters 408 filter the amplified read signal provided by the preamplifier module 22 and provide the filtered read signal to the ADC module 410. The ADC module 410 samples the filtered read signal at a sampling frequency set by the clock 412. For example only, the clock 412 may provide pulses to the ADC module 410 corresponding to the sampling frequency. While not shown, when writing data, the read/write channel module 24 also writes the data to the platter 14 based on the frequency set by the clock 412.

The digital filters 414 filter the samples provided by the ADC module 410 and provide the filtered samples to the digital detectors 416. The digital detectors 416 process the filtered samples into a data bit sequence. For example only, the digital detectors 416 may process the filtered samples into data bit sequence of binary ones and zeros. The digital detectors 416 output the data bit sequence to a controller, which may then output the data bit sequence to the host device 46, the buffer 32, the processor 34, and/or other suitable module or device.

The clock 412 sets the sampling frequency based on a period of time between predetermined marks or fields of servo data included on the platter 14. For example only, the clock 412 sets the sampling frequency based on the period of time between the marks 208. The mark detection module 418 generates a mark indicator when one of the marks 208 is read by the read element of the read/write device 20. In one implementation, the marks are detected based on an output the digital detectors 416. In another implementation, the marks are detected based on an output of the digital filters 414.

The timer module 420 receives the mark indicators and resets a timer value after each mark indicator is generated. For example only, the timer module 420 resets the timer value to a predetermined reset value, such as zero. The timer value is incremented as time passes. In this manner, the timer value corresponds to the period of time between two of the marks 208.

The clock 412 sets the sampling frequency for data read from the platter 14 based on the period of time between the marks 208. For example only, the clock 412 may decrease the sampling frequency when the period of time between two of the marks 208 increases. The clock 412 may also adjust the sampling frequency based on an output of the ADC 410, the digital filters 414, and/or the digital detectors 416.

A frequency adjustment system 422 according to the present disclosure estimates a distance between the second center location 302 and the data and adjusts the sampling frequency for the data based on that distance. More specifically, the frequency adjustment system 422 predicts a frequency offset based on the distance and adjusts the sampling frequency based on the frequency offset. In this manner, the frequency adjustment system 422 adjusts the sampling frequency for data read from the platter 14 to account for the offset.

The offset estimation module 424 reads the timer value when each mark indicator is generated and estimates the distance between the second center location 302 and the data based on the timer value. More specifically, the offset estimation module 424 may estimate the offset distance (i.e., Δ) and the offset angle (i.e., Θ) based on the timer value when each mark indicator is generated. For example only, the offset estimation module 424 may estimate the offset distance and the offset angle based on the equation: c ² =a ² +b ²−2*a*b*cos(θ),  (2) where c is the length of a hypotenuse of a triangle, a and b are lengths of first and second sides of the triangle, and Θ is the angle between the first and second sides of the triangle. From equation (2), the distance between the second center location 302 and the data may be determined using the equation: {tilde over (r)} ² =r ²+Δ²−2*r*Δ*cos(θ),  (3) where {tilde over (r)} is the distance between the second center location 302 and the data, Δ is the distance between the first center location 204 and the data, Δ is the distance between the first and second center locations 204 and 302 (i.e., the offset distance), and Θ is the offset angle.

Taking the square root of equation (3), the distance between the second center location 302 and the data, the offset distance, and/or offset angle may also be determined using the equation: {tilde over (r)}√=√{square root over (r ²+Δ²−2*r*Δ*cos(θ).)}  (4) To simplify the estimation of the offset angle and/or the offset distance, a wedge index value may be assigned to each of the servo wedges 206.

The offset estimation module 424 may estimate the offset angle based on a current wedge index value (i.e., k), the total number of servo wedges 206, and an initial offset angle (i.e., Θ₀). The initial offset angle corresponds to the offset angle at a time zero, such as a time when the frequency adjustment system 422 is enabled. For example only, the frequency adjustment system 422 may be enabled when the HDDA 13 is powered up and/or when an event that may cause an offset is detected. Using the wedge index values, the offset angle may be expressed as:

$\begin{matrix} {{\theta = {\frac{2*\Pi*k}{N} - \theta_{0}}},} & (5) \end{matrix}$ where k is the current wedge index value (1≦k≦N), N is the total number of servo wedges 206, and θ₀ the initial offset angle.

The offset estimation module 424 may estimate the offset distance and initial offset angle in any suitable manner. For example only, the offset estimation module 424 may store the period of time between each of the marks 208 over one or more revolutions of the platter 14. The periods may be indexed according to wedge index value. The offset estimation module 424 may then estimate the offset distance and the initial offset angle based on the stored periods, for example, using a regression analysis. In another implementation, the offset distance and/or angle for a given wedge may be estimated based on an average of a predetermined number (e.g., 100) of stored periods for that wedge.

In other implementations, the offset estimation module 424 may adaptively estimate the offset distance and the initial offset angle. For example only, the offset estimation module 424 may apply a least mean squared (LMS) adaptive filter and estimate the offset distance and the initial offset angle based on the timer value and one or more previous estimates. In one implementation, the offset estimation module 424 applies a LMS analysis and estimate the distance between the second center location 302 and the data based on the timer value and at least one previous estimate of the offset distance and the initial offset angle.

The offset estimation module 424 may be aided in estimating the offset distance and/or the initial offset angle by various parameters. For example only, from equations (3) and (4), the distance between the second center location 302 and the data will be a greatest distance when the offset angle is π (i.e., 180° from the second line 308). Similarly, the distance between the second center location 302 and the data will be a shortest distance when the offset angle is 0 or 2π (i.e., 0° or 360°). The offset estimation module 424 provides the offset distance and the initial offset angle to the frequency adjustment module 426 when each mark indicator is generated.

The frequency adjustment module 426 determines a frequency offset based on the distance between the second center location 302 and the data. For example only, the frequency adjustment module 426 may predict the frequency offset based on the offset distance and the initial offset angle. The frequency adjustment module 426 adjusts the sampling frequency set by the clock 412 based on the frequency offset. In this manner, the frequency adjustment module 426 adjusts the sampling frequency to account for the offset.

For example only, the frequency adjustment module 426 may predict the frequency offset using the equation:

==2*Π*{tilde over (r)}*S*D,  (6) where

is the frequency offset, {tilde over (r)} is the distance between the second center location 302 and the data, S is the angular velocity of the platter 14, and D is the linear density of the data. Based on equations (4) and (5) above, the frequency offset may also be determined using the equation:

=2*Π*S*D*√{square root over (r ²+Δ²−2*r*Δ*cos(θ),)}  (7) where r is the distance between the data and the first center location 204, Δ is the offset distance, and θ is the offset angle. Substituting θ from equation (5) and reducing equation (7) further, the frequency offset may also be determined using the equation:

$\begin{matrix} {{{\bullet\; f} = {2*\Pi*r*S*D*\sqrt{\frac{r^{2}}{r^{2}} + \frac{\Delta^{2}}{r^{2}} - {\frac{2*\Delta}{r}*{\cos\left( {\frac{2*\Pi*k}{N} - \theta_{0}} \right)}}}}},} & (8) \end{matrix}$ where k is the current wedge index value assigned to the current servo wedge, N is the total number of servo wedges 206, and θ₀ is the initial offset angle.

Assuming that

$\begin{matrix} {{{\bullet\; f} = {2*\Pi*r*S*D*\sqrt{\frac{r^{2}}{r^{2}} + \frac{\Delta^{2}}{r^{2}} - {\frac{2*\Delta}{r}*{\cos\left( {\frac{2*\Pi*k}{N} - \theta_{0}} \right)}}}}},} & (8) \end{matrix}$ is small, the

$\begin{matrix} {{\bullet\; f} = {2*\Pi*r*S*D*{\sqrt{1 - {\frac{2*\Delta}{r}*{\cos\left( {\frac{2*\Pi*k}{N} - \theta_{0}} \right)}}}.}}} & (9) \end{matrix}$ term of equation (8) will be negligible, and the frequency offset may be predicted using the equation:

$\begin{matrix} {{\bullet\; f} = {2*\Pi*r*S*D*{\sqrt{1 - {\frac{2*\Delta}{r}*{\cos\left( {\frac{2*\Pi*k}{N} - \theta_{0}} \right)}}}.}}} & (9) \end{matrix}$ The frequency adjustment module 426 may further reduce the frequency offset equation based on a Taylor series expansion of one or more components of equation (9). For example only, based on equation (9) and the Taylor series expression:

$\begin{matrix} {{\sqrt{1 - x} = {1 - {\frac{1}{2}x} - {\frac{1}{8}x^{2}} - {\frac{1}{16}x^{3}} - \ldots}}\mspace{14mu},} & (10) \end{matrix}$ the frequency offset may be predicted based on the equation:

$\begin{matrix} {{\bullet\; f} = {2*\Pi*r*S*D*{\left\lbrack {\left( {1 - \frac{\Delta}{r}} \right)*{\cos\left( {\frac{2*\Pi*k}{N} - \theta_{0}} \right)}} \right\rbrack.}}} & (11) \end{matrix}$

The frequency adjustment module 426 may also normalize the frequency offset with respect to the nominal frequency (i.e., f). The nominal frequency corresponds to the frequency at which the data would be sampled if the platter 14 was rotating relative to the first center location 204. In other words, the nominal frequency corresponds to the frequency at which the data was written to the platter 14. For example only, the frequency adjustment module 426 may determine the normalized frequency using the equation:

$\begin{matrix} {{f_{Norm} = {\frac{\bullet\; f}{f} \approx {\left( {1 - \frac{\Delta}{r}} \right)*{\cos\left( {\frac{2*\Pi*k}{N} - \theta_{0}} \right)}}}},} & (12) \end{matrix}$ where f_(Norm) is the normalized frequency and f is the nominal frequency (i.e., f=2*π*r*S*D). Normalizing the frequency offset simplifies the estimation of the offset distance to determining minimum and maximum values of a sine wave and estimating based on those values. Normalizing the frequency offset also simplifies the estimation of the offset angle to estimating based on the minimum and maximum values and/or angles at which the sine wave becomes zero.

The frequency adjustment module 426 adjusts the sampling frequency set by the clock 412 based on the normalized frequency. For example only, the frequency adjustment module 426 may set the sampling frequency based on a product of the normalized frequency offset and the frequency of the clock 412.

An exemplary illustration of normalized frequency offset as a function of servo wedge index value is presented in FIG. 5. Trace 502 corresponds to the normalized frequency offset when

$\frac{\Delta}{r}$ is approximately 0.001 in, the initial offset angle is 0°, and the platter 14 includes 250 servo wedges. Trace 502 is plotted based on an angular velocity of approximately 1.0 revolution per second and a linear density of approximately 1.0 bits/in.

FIG. 6 depicts an exemplary illustration of normalized frequency offset as a function of normalized offset angle for two rotating storage mediums. The normalized offset angle corresponds to the offset angle divided by 2π ((i.e., one revolution). Trace 602 corresponds to normalized frequency offset for a rotating storage medium without an offset. Accordingly, the normalized frequency offset is 1.0 and the sampling frequency is unadjusted.

Trace 604 corresponds to normalized frequency offset for a rotating storage medium having an offset distance of approximately 0.001 in. The frequency adjustment system 422 adjusts the sampling frequency for data the data of this rotating storage medium based on the normalized frequency offset at each offset angle.

FIG. 7 illustrates a flowchart depicting exemplary steps performed by the frequency adjustment system 422. Control begins in step 702 where control resets the timer. In one implementation, control rests the timer value in step 702. Control may reset the timer value to a predetermined reset value, such as zero.

Control starts the timer in step 704. The timer value corresponds to the period of time that has passed since servo data of one of the servo wedges 206 has been read by the read/write device 20. In step 706, control determines whether the read/write device 20 has read servo data. If true, control continues to step 708. If false, control remains in step 706. For example only, control may continue to step 708 when the read/write device 20 reads an SSM of one of the servo wedges 206.

In step 708, control generates a mark indicator. In this manner, control generates a mark indicator each time that servo data of one of the servo wedges 206 is read by the read/write device 20. Control reads the timer value in step 710. Control estimates the offset distance and the initial offset angle in step 712.

Control predicts the frequency offset in step 714. More specifically, control predicts the frequency offset based on the offset distance and the initial offset angle. Control continues to step 716 where control adjusts the sampling frequency based on the frequency offset. Control may also normalize the frequency offset with respect to the nominal frequency before adjusting the sampling frequency. In this manner, control adjusts the sampling frequency based on the offset distance and the offset angle. Control then returns to step 702.

FIG. 8 illustrates a functional block diagram of an exemplary DVD drive 800. The principles of the present disclosure can be implemented in the DVD drive 800, a CD drive (not shown), and/or any other optical drive. For example, the principles of the present application may be implemented in a DVD control module 802 and/or in an analog front-end module 804 to adjust the sampling frequency at which data is read from an optical storage medium 806.

The DVD drive 800 includes a DVD PCB 808 and a DVD assembly (DVDA) 810. The DVD PCB 808 includes the DVD control module 802, the analog front-end module 804, a buffer 812, nonvolatile memory 814, a processor 816, a spindle/FM (feed motor) driver module 818, a write strategy module 820, and a DSP module 822.

The DVD control module 802 controls components of the DVDA 810 and communicates with an external device (not shown) via an I/O interface 824. The external device may include a computer, a multimedia device, a mobile computing device, etc. The I/O interface 824 may include wireline and/or wireless communication links.

The DVD control module 802 may receive data from the buffer 812, the nonvolatile memory 814, the processor 816, the spindle/FM driver module 818, the analog front-end module 804, the write strategy module 820, the DSP module 822, and/or the I/O interface 824. The processor 816 may process the data, including encoding, decoding, filtering, and/or formatting. The DSP module 822 performs signal processing, such as video and/or audio coding/decoding. The processed data may be output to the buffer 812, the nonvolatile memory 814, the processor 816, the spindle/FM driver module 818, the analog front-end module 804, the write strategy module 820, the DSP module 822, and/or the I/O interface 824.

The DVD control module 802 may use the buffer 812 and/or the nonvolatile memory 814 to store data related to the control and operation of the DVD drive 800. The buffer 812 may include DRAM, SDRAM, etc. The nonvolatile memory 814 may include any suitable type of semiconductor or solid-state memory, such as flash memory (including NAND and NOR flash memory), phase change memory, magnetic RAM, and multi-state memory, in which each memory cell has more than two states. The DVD PCB 808 includes a power supply 826 that provides power to the components of the DVD drive 800.

The DVDA 810 may include a preamplifier device 828, a laser driver 830, and an optical device 832, which may be an optical read/write (ORW) device or an optical read-only (OR) device. A spindle motor 834 rotates the optical storage medium 806, and a feed motor 836 actuates the optical device 832 relative to the optical storage medium 806.

When reading data from the optical storage medium 806, the laser driver provides a read power to the optical device 832. The optical device 832 detects data from the optical storage medium 806, and transmits the data to the preamplifier device 828. The analog front-end module 804 receives data from the preamplifier device 828 and performs such functions as filtering and A/D conversion. To write to the optical storage medium 806, the write strategy module 820 transmits power level and timing data to the laser driver 830. The laser driver 830 controls the optical device 832 to write data to the optical storage medium 806.

The broad teachings of the disclosure can be implemented in a variety of forms. Therefore, while this disclosure includes particular examples, the true scope of the disclosure should not be so limited since other modifications will become apparent upon a study of the drawings, the specification, and the following claims. 

What is claimed is:
 1. A system comprising: a mark module configured to generate i) a first indicator for a first mark on a storage medium detected when first servo data is read from the storage medium, and ii) a second indicator for a second mark on the storage medium detected when second servo data is read from the storage medium; an estimation module configured to, based on i) a first location of a center of the storage medium about which the storage medium is rotated, and ii) a period between times when the first indicator and the second indicator are generated, estimate a first distance or an offset angle relative to the first location of the center of the storage medium; and an adjustment module configured to, based on the first distance or the offset angle, adjust a sampling frequency at which user data is read from the storage medium.
 2. The system of claim 1, wherein the estimation module is configured to estimate the first distance or the offset angle based on one of: a previous estimate of the first distance or a previous estimate of the offset angle; a least mean squares estimate of a difference between i) the period between the times when the first indicator and the second indicator are generated, and ii) a previous period between when a third indicator and a fourth indicator are generated, wherein the third indicator is generated when third servo data is read from the storage medium, and wherein the fourth indicator is generated when fourth servo data is read from the storage medium; and a regression analysis performed based on a predetermined number of periods between respective pairs of indicators, wherein each indicator of the pairs of indicators is for a respective mark on the storage medium detected when servo data corresponding to the respective mark is read from the storage medium.
 3. The system of claim 2, wherein the estimation module is configured to estimate i) the first distance based on the previous estimate of the first distance, or ii) the offset angle based on the previous estimate of the offset angle.
 4. The system of claim 2, wherein the estimation module is configured to estimate the first distance or the offset angle based on the least mean squares estimate.
 5. The system of claim 2, wherein the estimation module is configured to estimate the first distance or the offset angle based on the regression analysis.
 6. The system of claim 1, wherein: the estimation module is configured to estimate the offset angle between i) a first line extending between the first location of the center of the storage medium and a second location of the center of the storage medium, and ii) a second line extending between the first location and a third location; the storage medium was rotated about the second location of the center of the storage medium when the user data was written to the storage medium; the user data is stored on the storage medium at the third location; and the adjustment module is configured to adjust the sampling frequency based on the offset angle.
 7. The system of claim 6, wherein the storage medium is rotated about the first location of the center of the storage medium when the user data is read from the storage medium.
 8. The system of claim 1, wherein: the estimation module is configured to estimate the first distance between one of i) the first location of the center of the storage medium and a second location of the center of the storage medium, and ii) the first location of the center of the storage medium and a third location; the storage medium was rotated about the second location of the center of the storage medium when the user data was written to the storage medium; the user data is stored on the storage medium at the third location; and the adjustment module is configured to adjust the sampling frequency based on the first distance.
 9. The system of claim 1, wherein: the estimation module is configured to estimate the first distance based on the period between the times when the first indicator and the second indicator are generated; and the adjustment module is configured to adjust the sampling frequency based on the first distance.
 10. The system of claim 1, wherein the estimation module is configured to estimate the first distance and a second distance; the first distance is estimated between the first location of the center of the storage medium and a second location of the center of the storage medium; the storage medium was rotated about the second location of the center of the storage medium when the user data was written to the storage medium; the second distance is estimated between the first location and a third location; the user data is stored on the storage medium at the third location; and the adjustment module is configured to adjust the sampling frequency based on i) the first distance, and ii) the second distance.
 11. The system of claim 10, wherein the estimation module is configured to estimate each of the first distance and the second distance based on the period between the times when the first indicator and the second indicator are generated.
 12. The system of claim 1, wherein the estimation module is configured to estimate the offset angle based on: a previous offset angle, wherein the previous offset angle was determined based on periods between a plurality of marks on the storage medium, wherein the plurality of marks on the storage medium were detected when respective servo data was read from the storage medium, and wherein the respective servo data was read prior to the reading of the first servo data and the second servo data; an index value assigned to i) a first servo wedge of the first servo data, or ii) a second servo wedge of the second servo data; and a total number of servo wedges of the storage medium.
 13. The system of claim 1, wherein: the estimation module is configured to estimate i) the first distance based on an average of a predetermined number of estimates of the first distance, and ii) the offset angle based on an average of a predetermined number of estimates of the offset angle; and the adjustment module is configured to adjust the sampling frequency based on the first distance and the offset angle.
 14. The system of claim 1, wherein the adjustment module is configured to i) predict a frequency offset based on the first distance, and ii) adjust the sampling frequency based on the frequency offset.
 15. The system of claim 14, wherein the adjustment module is configured to normalize the frequency offset with respect to a nominal frequency at which the user data was written to the storage medium.
 16. The system of claim 1, further comprising: the storage medium; and a channel module configured to sample the user data based on the sampling frequency, wherein the storage medium comprises a platter of a hard disk drive or an optical storage medium.
 17. A method comprising: generating i) a first indicator for a first mark on a storage medium detected when first servo data is read from the storage medium, and ii) a second indicator for a second mark on the storage medium detected when second servo data is read from the storage medium; based on i) a first location of a center of the storage medium about which the storage medium is rotated, and ii) a period between times when the first indicator and the second indicator are generated, estimating a distance or an offset angle relative to the first location of the center of the storage medium; and based on the distance or the offset angle, adjusting a sampling frequency at which user data is read from the storage medium.
 18. The method of claim 17, further comprising estimating the distance or the offset angle based on one of: a previous estimate of the distance or a previous estimate of the offset angle; a least mean squares estimate of a difference between i) the period between the times when the first indicator and the second indicator are generated, and ii) a previous period between when a third indicator and a fourth indicator are generated, wherein the third indicator is generated when third servo data is read from the storage medium, and wherein the fourth indicator is generated when fourth servo data is read from the storage medium; and a regression analysis performed based on a predetermined number of periods between respective pairs of indicators, wherein each indicator of the pairs of indicators is for a respective mark on the storage medium detected when servo data corresponding to the respective mark is read from the storage medium.
 19. The method of claim 17, further comprising: estimating the offset angle between i) a first line extending between the first location of the center of the storage medium and a second location of the center of the storage medium, and ii) a second line extending between the first location of the center of the storage medium and a third location, wherein the storage medium was rotated about the second location of the center of the storage medium when the user data was written to the storage medium, and wherein the user data is stored on the storage medium at the third location; and adjusting the sampling frequency based on the offset angle, wherein the storage medium is rotated about the first location of the center of the storage medium when the user data is read from the storage medium.
 20. The method of claim 17, further comprising: estimating the distance between one of i) the first location of the center of the storage medium and a second location of the center of the storage medium, and ii) the first location of the center of the storage medium and a third location, wherein the storage medium was rotated about the second location of the center of the storage medium when the user data was written to the storage medium, and wherein the user data is stored on the storage medium at the third location; and adjusting the sampling frequency based on the distance. 